package br.com.main.client.system.botoes;


import java.util.Date;

import br.com.main.client.ComunServico;
import br.com.main.client.ComunServicoAsync;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DeckPanel;
import com.google.gwt.user.client.ui.TextBox;

public class MeusDadosPresenter {
	
	Display display;
	DeckPanel deck;
	
	public interface Display {

		TextBox getTbNome();

		TextBox getTbCpf();

		TextBox getTbLogin();

		TextBox getTbEmail();

		TextBox getTbTelefone();

		TextBox getTbData_nasc();

		TextBox getTbData_mandato();

		TextBox getTbCnpj();

		TextBox getTbCep();

		TextBox getTbEstado();

		TextBox getTbCidade();

		TextBox getTbBairro();

		TextBox getTbRua();

		TextBox getTbNumero();

		TextBox getTbComplemento();

		Button getBtEditar();

		Button getBtSalvar();

		Button getBtCancel();
		
	}

	public MeusDadosPresenter(Display display, DeckPanel deck) {
		super();
		this.display = display;
		this.deck = deck;
		bind();
		loadFields();
	}
	
	public void bind() {
		
		display.getBtEditar().addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent arg0) {
				
				changleEnable(true);
				
				display.getBtSalvar().setVisible(true);
				display.getBtCancel().setVisible(true);
				display.getBtEditar().setVisible(false);
			}
		});
		
		display.getBtSalvar().addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent arg0) {
				
				changleEnable(false);
				
				display.getBtSalvar().setVisible(false);
				display.getBtCancel().setVisible(false);
				display.getBtEditar().setVisible(true);
				
				String[] novosDados = new String[14];
				novosDados[0] = display.getTbNome().getText();
				novosDados[1] = display.getTbLogin().getText();
				novosDados[2] = display.getTbEmail().getText();
				novosDados[3] = display.getTbTelefone().getText();
				novosDados[4] = display.getTbData_nasc().getText();
				novosDados[5] = display.getTbData_mandato().getText();
				novosDados[6] = "Sistema";
				novosDados[7] = display.getTbCep().getText();
				novosDados[8] = display.getTbEstado().getText();
				novosDados[9] = display.getTbCidade().getText();
				novosDados[10] = display.getTbBairro().getText();
				novosDados[11] = display.getTbRua().getText();
				novosDados[12] = display.getTbNumero().getText();
				novosDados[13] = display.getTbComplemento().getText();
				
				
				getServico().updateSindico(novosDados, new AsyncCallback<Void>() {
					
					@Override
					public void onSuccess(Void arg0) {
						Window.alert("Alterado com sucesso!");
					}
					
					@Override
					public void onFailure(Throwable arg0) {
						// TODO Auto-generated method stub
						
					}
				});
				
			}
		});
		
		display.getBtCancel().addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent arg0) {

				loadFields();
				
				display.getBtSalvar().setVisible(false);
				display.getBtCancel().setVisible(false);
				display.getBtEditar().setVisible(true);
			}
		});
	}
	
	public void loadFields () {
		getServico().getSindico(new AsyncCallback<String[]>() {
			
			@SuppressWarnings("deprecation")
			@Override
			public void onSuccess(String[] result) {

				DateTimeFormat format = DateTimeFormat.getFormat("d/MM/y");

				String dataNasc = format.format(new Date(result[6]));
				String dataMand = format.format(new Date(result[7]));
				
				display.getTbNome().setText(result[1]);
				display.getTbCpf().setText(result[0]);
				display.getTbLogin().setText(result[2]);
				display.getTbEmail().setText(result[4]);
				display.getTbTelefone().setText(result[5]);
				display.getTbData_nasc().setText(dataNasc);
				display.getTbData_mandato().setText(dataMand);
				display.getTbCnpj().setText(result[8]);
				display.getTbCep().setText(result[10]);
				display.getTbEstado().setText(result[11]);
				display.getTbCidade().setText(result[13]);
				display.getTbBairro().setText(result[12]);
				display.getTbRua().setText(result[14]);
				display.getTbNumero().setText(result[15]);
				display.getTbComplemento().setText(result[16]);
				
				changleEnable(false);
			}
			
			@Override
			public void onFailure(Throwable arg0) {
				// TODO Auto-generated method stub
				
			}
		});
	}
	
	public void changleEnable (boolean status) {
		
		display.getTbNome().setEnabled(status);
		display.getTbLogin().setEnabled(status);
		display.getTbEmail().setEnabled(status);
		display.getTbTelefone().setEnabled(status);
		display.getTbData_nasc().setEnabled(status);
		display.getTbData_mandato().setEnabled(status);
		display.getTbCep().setEnabled(status);
		display.getTbEstado().setEnabled(status);
		display.getTbCidade().setEnabled(status);
		display.getTbBairro().setEnabled(status);
		display.getTbRua().setEnabled(status);
		display.getTbNumero().setEnabled(status);
		display.getTbComplemento().setEnabled(status);
	}
	
	private ComunServicoAsync getServico() {
		return GWT.create(ComunServico.class);
	}
}
